package com.huanf.utils;

import com.huanf.domain.ExcelImageWriteVo;
import com.huanf.domain.ExcelListObjectWriteVo3;
import com.huanf.domain.ExcelListWriteVo;
import com.huanf.domain.ExcelObjectWriteVo1;
import com.huanf.domain.ExcelObjectWriteVo2;
import com.huanf.domain.ExcelSimpleWriteVo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * @author: 35238
 * 功能: 写Excel-easyPoi-写入(导入)基本数据类型(无数据库)
 * 时间: 2023-12-25 17:58
 */
public class ExcelWriteUtil {

    /**
     * 模拟数据，注意用的是实体类，不是使用数据库。写Excel-easyPoi-写入(导入)基本数据类型(无数据库)
     */
    public List<ExcelSimpleWriteVo> xxgetUsers() {
        //存放实体类数据的集合
        List<ExcelSimpleWriteVo> userList = new ArrayList<>();
        //为表格添加5行数据
        for (int i = 0; i < 5; i++) {
            ExcelSimpleWriteVo user = new ExcelSimpleWriteVo();
            //赋值
            user.setId(String.valueOf(i));
            user.setName("张三-"+i);
            user.setAge(10+i);
            user.setBir(new Date());
            userList.add(user);
        }
        return userList;
    }

    /**
     * 模拟数据，注意用的是实体类，不是使用数据库。写Excel-easyPoi-写入(导入)集合数据类型(无数据库)
     */
    public List<ExcelListWriteVo> xxgetUsers2() {
        //存放实体类数据的集合
        List<ExcelListWriteVo> userList = new ArrayList<>();
        //为表格添加5行数据
        for (int i = 0; i < 5; i++) {
            ExcelListWriteVo user = new ExcelListWriteVo();
            //赋值
            user.setName("李四-"+i);
            user.setHobby(Arrays.asList("打篮球"+i,"跑步"+i,"看书"+i));

            userList.add(user);
        }
        return userList;
    }

    /**
     * 模拟数据，注意用的是实体类，不是使用数据库。写Excel-easyPoi-把两个实体类的数据写入到一个表格(一对一关系)。写入(导入)对象数据类型(无数据库)
     */
    public List<ExcelObjectWriteVo2> xxgetUsers3() {
        //存放实体类数据的集合
        List<ExcelObjectWriteVo2> userList = new ArrayList<>();
        //为表格添加5行数据
        for (int i = 0; i < 5; i++) {
            ExcelObjectWriteVo2 user = new ExcelObjectWriteVo2();
            //赋值
            user.setSchool("长安大学"+i);
            user.setBoss("李校长"+i);
            //2一对一。把另一个实体类(ExcelObjectWriteVo1)的数据也放进来。由于另一个实体类没有数据，所以也要手动加一些数据
            ExcelObjectWriteVo1 excelObjectWriteVo1 = new ExcelObjectWriteVo1();
            excelObjectWriteVo1.setName("张三同学"+i);
            excelObjectWriteVo1.setIdCard("12345678901234567"+i);
            //正式放进来
            user.setExcelObjectWriteVo1(excelObjectWriteVo1);

            userList.add(user);
        }
        return userList;
    }

    /**
     * 模拟数据，注意用的是实体类，不是使用数据库。写Excel-easyPoi-把多个实体类的数据写入到一个表格(一对多关系)。写入(导入)对象数据类型(无数据库)
     */
    public List<ExcelObjectWriteVo2> xxgetUsers4() {
        //存放实体类数据的集合
        List<ExcelObjectWriteVo2> userList = new ArrayList<>();
        //为表格添加5行数据
        for (int i = 0; i < 5; i++) {
            ExcelObjectWriteVo2 user = new ExcelObjectWriteVo2();
            //赋值
            user.setSchool("长安大学"+i);
            user.setBoss("李校长"+i);
            //2一对一。把另一个实体类(ExcelObjectWriteVo1)的数据也放进来。由于另一个实体类没有数据，所以也要手动加一些数据
            ExcelObjectWriteVo1 excelObjectWriteVo1 = new ExcelObjectWriteVo1();
            excelObjectWriteVo1.setName("张三同学"+i);
            excelObjectWriteVo1.setIdCard("12345678901234567"+i);
            //2`一对多。把另一个实体类(ExcelListObjectWriteVo3)的数据也放进来。由于另一个实体类没有数据，所以也要手动加一些数据(可以用set方法，也可以用构造方法添加数据，这里使用后者)
            List<ExcelListObjectWriteVo3> excelListObjectWriteVo3 = new ArrayList<>();
            excelListObjectWriteVo3.add(new ExcelListObjectWriteVo3("A小卖部"+i,"薯片"+i));
            excelListObjectWriteVo3.add(new ExcelListObjectWriteVo3("B小卖部"+i,"饮料"+i));
            excelListObjectWriteVo3.add(new ExcelListObjectWriteVo3("C小卖部"+i,"辣条"+i));
            //正式放进来
            user.setExcelObjectWriteVo1(excelObjectWriteVo1);
            user.setExcelListObjectWriteVo3(excelListObjectWriteVo3);
            userList.add(user);
        }
        return userList;
    }

    /**
     * 模拟数据，注意用的是实体类，不是使用数据库。写Excel-easyPoi-写入(导入)图片(无数据库)
     */
    public List<ExcelImageWriteVo> xxgetUsers5() {
        //存放实体类数据的集合
        List<ExcelImageWriteVo> userList = new ArrayList<>();
        //为表格添加5行数据
        for (int i = 0; i < 5; i++) {
            ExcelImageWriteVo user = new ExcelImageWriteVo();
            //赋值
            user.setName("王五"+i);

            //图片的位置
            String PATH = "E:\\桌面\\Java-Ready\\conf\\Excel\\imgeToExcel.jpg";
            //将图片放入表格
            user.setPhoto(PATH);

            userList.add(user);
        }
        return userList;
    }

}
